<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>[Generic Component Framework v3] GCF::IpcRemoteObject Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<!--link href="tabs.css" rel="stylesheet" type="text/css"-->
</head><body>
 <div id="wrapper">
    <div id="logo_box">
        <a class="img_link" href="https://github.com/pnudupa/gcf" target="_blank" ><img style="float:left;margin-left:10px;margin-top:5px;margin-bottom:5px;"src="header_gcf_logo.jpg" alt="GCF LOGO"/></a>
        <a class="img_link" href="https://www.vcreatelogic.com/" target="_blank" ><img style="float:right;margin-right:10px; margin-top: 30px;" src="header_vcl_logo.jpg" alt="VCL LOGO"/></a>
        <div style="clear:both"></div>
    </div>
    <div class="nav">
        <ul>
            <li class="selectedpage">
                <a class="a-home" href="index.html" >
                    <span>Home</span>
                </a>
            </li>
            <li>
                <a class="a-classes " href="classes.html">
                    <span>All Classes</span>
                </a>
            </li>
            <li>
                <a class="a-home " href="gcf_modules.html">
                    <span>Modules</span>
                </a>
            </li>
            <li>
                <a class="a-home " href="gcf_guides_and_videos.html">
                    <span>Guides & Videos</span>
                </a>
            </li>
            <li>
                <a class="a-home " href="gcf_tools_and_inbuilt_components.html">
                    <span>Tools & Components</span>
                </a>
            </li>
        </ul>
    </div>
    <div id="main-content">
        <div class="inside">
        <div>
<!-- Generated by Doxygen 1.8.16 -->
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>GCF</b></li><li class="navelem"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html">IpcRemoteObject</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#signals">Signals</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_g_c_f_1_1_ipc_remote_object-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">GCF::IpcRemoteObject Class Reference<div class="ingroups"><a class="el" href="group__gcf__ipc.html">IPC module in GCF</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>This class allows you to maintain a persistent connection with a remote object.  
 <a href="class_g_c_f_1_1_ipc_remote_object.html#details">More...</a></p>

<p><code>#include &lt;GCF3/IpcRemoteObject&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="signals"></a>
Signals</h2></td></tr>
<tr class="memitem:a0a07e030ee61d05b73f7366420b3ef10"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a0a07e030ee61d05b73f7366420b3ef10">activated</a> ()</td></tr>
<tr class="separator:a0a07e030ee61d05b73f7366420b3ef10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af311412eea6ebba527a5c01377414db3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af311412eea6ebba527a5c01377414db3">deactivated</a> ()</td></tr>
<tr class="separator:af311412eea6ebba527a5c01377414db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afda4f584706397729dc9a13f6ee8aaa1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#afda4f584706397729dc9a13f6ee8aaa1">signalOccurance</a> (const QString &amp;signal, const QVariantList &amp;args)</td></tr>
<tr class="separator:afda4f584706397729dc9a13f6ee8aaa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eb333dca6e8856124942e19b0b59cc1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5eb333dca6e8856124942e19b0b59cc1">propertyUpdated</a> (const QString &amp;propertyName, const QVariant &amp;value)</td></tr>
<tr class="separator:a5eb333dca6e8856124942e19b0b59cc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27765d87420dfdb641b7a0425e190545"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a27765d87420dfdb641b7a0425e190545">couldNotActivate</a> (const QString &amp;<a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af82279a50e96594db47f1f838c1da0aa">error</a>)</td></tr>
<tr class="separator:a27765d87420dfdb641b7a0425e190545"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af82279a50e96594db47f1f838c1da0aa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af82279a50e96594db47f1f838c1da0aa">error</a> (const QString &amp;error)</td></tr>
<tr class="separator:af82279a50e96594db47f1f838c1da0aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a059316dc66be5f639b6add6ebc3b4cee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a059316dc66be5f639b6add6ebc3b4cee">IpcRemoteObject</a> (const QHostAddress &amp;addr, quint16 port, const QString &amp;object, QObject *parent=nullptr)</td></tr>
<tr class="separator:a059316dc66be5f639b6add6ebc3b4cee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a752199e2c3ca30515abdc0f22733da70"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a752199e2c3ca30515abdc0f22733da70">~IpcRemoteObject</a> ()</td></tr>
<tr class="separator:a752199e2c3ca30515abdc0f22733da70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9a3fe129807efd53e0a8e001335b9a0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">isActivated</a> () const</td></tr>
<tr class="separator:af9a3fe129807efd53e0a8e001335b9a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb5a0c0b513e56f2615ca3516866e206"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#adb5a0c0b513e56f2615ca3516866e206">reactivate</a> ()</td></tr>
<tr class="separator:adb5a0c0b513e56f2615ca3516866e206"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc5ece21fca18ce5a960a32035a7e981"><td class="memItemLeft" align="right" valign="top">QHostAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#abc5ece21fca18ce5a960a32035a7e981">remoteAddress</a> () const</td></tr>
<tr class="separator:abc5ece21fca18ce5a960a32035a7e981"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06fff65dcc0cc102e033b9cbc7320b7b"><td class="memItemLeft" align="right" valign="top">quint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a06fff65dcc0cc102e033b9cbc7320b7b">remotePort</a> () const</td></tr>
<tr class="separator:a06fff65dcc0cc102e033b9cbc7320b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec0b2857326c503ad1ecc86b04669fe6"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#aec0b2857326c503ad1ecc86b04669fe6">remoteObjectPath</a> () const</td></tr>
<tr class="separator:aec0b2857326c503ad1ecc86b04669fe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e81e6bf18f701e02e796c6397d463c3"><td class="memItemLeft" align="right" valign="top">QVariantMap&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a7e81e6bf18f701e02e796c6397d463c3">properties</a> () const</td></tr>
<tr class="separator:a7e81e6bf18f701e02e796c6397d463c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2873a4e5e7f62e06a5d867ec82f343a0"><td class="memItemLeft" align="right" valign="top">QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a2873a4e5e7f62e06a5d867ec82f343a0">signalMethods</a> () const</td></tr>
<tr class="separator:a2873a4e5e7f62e06a5d867ec82f343a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f3ce460e4dd464f4dbe1d403ba2aa22"><td class="memItemLeft" align="right" valign="top">QStringList&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5f3ce460e4dd464f4dbe1d403ba2aa22">invokableMethods</a> () const</td></tr>
<tr class="separator:a5f3ce460e4dd464f4dbe1d403ba2aa22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6d73c2d8aa40b5a368a948025dad171"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#ae6d73c2d8aa40b5a368a948025dad171">updateProperty</a> (const QString &amp;propertyName, QObject *receiver=nullptr, const char *member=nullptr)</td></tr>
<tr class="separator:ae6d73c2d8aa40b5a368a948025dad171"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e212018eef32acfda38c1f7f0b0c655"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a9e212018eef32acfda38c1f7f0b0c655">changeProperty</a> (const QString &amp;propertyName, const QVariant &amp;propertyValue, QObject *receiver=nullptr, const char *member=nullptr)</td></tr>
<tr class="separator:a9e212018eef32acfda38c1f7f0b0c655"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab54f13ee3e8e707aab53b06f658c4003"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#ab54f13ee3e8e707aab53b06f658c4003">call</a> (const QString &amp;method, const QVariantList &amp;args, QObject *receiver=nullptr, const char *member=nullptr)</td></tr>
<tr class="separator:ab54f13ee3e8e707aab53b06f658c4003"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Once an instance of this class is created to connect to a remote object, it sends an activation request. Upon activation(); the object maintains a persistent connection with the remote object. If the remote application shuts down, or the remote object was deleted or otherwise goes out of communication, the <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af311412eea6ebba527a5c01377414db3">deactivated()</a> signal is emitted.</p>
<p>The following code snippet shows you how to create an instance of <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a> and prepare to use it.</p>
<div class="fragment"><div class="line"><a class="code" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a> *remoteObj = <span class="keyword">new</span> <a class="code" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a>(addr, port, <span class="stringliteral">&quot;Application.MyService&quot;</span>);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Wait for the object to get activated</span></div>
<div class="line"><a class="code" href="class_g_c_f_1_1_signal_spy.html">GCF::SignalSpy</a> spy(remoteObj, SIGNAL(<a class="code" href="class_g_c_f_1_1_ipc_remote_object.html#a0a07e030ee61d05b73f7366420b3ef10">activated</a>()));</div>
<div class="line">spy.wait();</div>
<div class="line"> </div>
<div class="line"><span class="keywordflow">if</span>( remoteObj-&gt;<a class="code" href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">isActivated</a>() ) {</div>
<div class="line">    <span class="comment">// Connection to the remote object is now activated</span></div>
<div class="line">}</div>
</div><!-- fragment --><p>You can make use of the <a class="el" href="group__gcf__ipc.html#ga9914677e892972e036b1f7498110c7a4">GCF::ipcConnect()</a> methods to make signal/slot connections between a local object and remote object. Example:</p>
<div class="fragment"><div class="line"><a class="code" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a> *remoteApp = <span class="keyword">new</span> <a class="code" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a>(addr, port, <span class="stringliteral">&quot;Application&quot;</span>);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Wait for the object to get activated</span></div>
<div class="line"><a class="code" href="class_g_c_f_1_1_signal_spy.html">GCF::SignalSpy</a> spy(remoteApp, SIGNAL(<a class="code" href="class_g_c_f_1_1_ipc_remote_object.html#a0a07e030ee61d05b73f7366420b3ef10">activated</a>()));</div>
<div class="line">spy.wait();</div>
<div class="line"> </div>
<div class="line"><span class="comment">// When a local button is clicked, we want the remoteApp to quit.</span></div>
<div class="line">QPushButton *quitButton = ...;</div>
<div class="line"><a class="code" href="group__gcf__ipc.html#ga9914677e892972e036b1f7498110c7a4">GCF::ipcConnect</a>(quitButton, SIGNAL(clicked()), remoteAll, SLOT(quit()));</div>
</div><!-- fragment --> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a059316dc66be5f639b6add6ebc3b4cee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a059316dc66be5f639b6add6ebc3b4cee">&#9670;&nbsp;</a></span>IpcRemoteObject()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GCF::IpcRemoteObject::IpcRemoteObject </td>
          <td>(</td>
          <td class="paramtype">const QHostAddress &amp;&#160;</td>
          <td class="paramname"><em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">quint16&#160;</td>
          <td class="paramname"><em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QObject *&#160;</td>
          <td class="paramname"><em>parent</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructor.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">addr</td><td>address of the computer on which the remote application is running </td></tr>
    <tr><td class="paramname">port</td><td>port number of the <a class="el" href="class_g_c_f_1_1_ipc_server.html">GCF::IpcServer</a> in the remote application </td></tr>
    <tr><td class="paramname">object</td><td>name of the remote object </td></tr>
    <tr><td class="paramname">parent</td><td>pointer to the parent <code>QObject</code> of this class</td></tr>
  </table>
  </dd>
</dl>
<p>Sometime after the constructor returns the <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a0a07e030ee61d05b73f7366420b3ef10">activated()</a> signal is emitted upon successful activation. The coundNotActivate() signal is emitted with an error message describing the reason for failure. </p>

</div>
</div>
<a id="a752199e2c3ca30515abdc0f22733da70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a752199e2c3ca30515abdc0f22733da70">&#9670;&nbsp;</a></span>~IpcRemoteObject()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GCF::IpcRemoteObject::~IpcRemoteObject </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Destructor </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="af9a3fe129807efd53e0a8e001335b9a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9a3fe129807efd53e0a8e001335b9a0">&#9670;&nbsp;</a></span>isActivated()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool GCF::IpcRemoteObject::isActivated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>true if this class has been activated. False otherwise. </dd></dl>

</div>
</div>
<a id="adb5a0c0b513e56f2615ca3516866e206"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb5a0c0b513e56f2615ca3516866e206">&#9670;&nbsp;</a></span>reactivate()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::reactivate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>If this class was activated once and then got deactivated for whatever reason, you can call this method to request a reactivation. </p>

</div>
</div>
<a id="abc5ece21fca18ce5a960a32035a7e981"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc5ece21fca18ce5a960a32035a7e981">&#9670;&nbsp;</a></span>remoteAddress()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QHostAddress GCF::IpcRemoteObject::remoteAddress </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>address of the computer on which the remote application is running </dd></dl>

</div>
</div>
<a id="a06fff65dcc0cc102e033b9cbc7320b7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06fff65dcc0cc102e033b9cbc7320b7b">&#9670;&nbsp;</a></span>remotePort()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">quint16 GCF::IpcRemoteObject::remotePort </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>port number of the <a class="el" href="class_g_c_f_1_1_ipc_server.html">GCF::IpcServer</a> on the remote application </dd></dl>

</div>
</div>
<a id="aec0b2857326c503ad1ecc86b04669fe6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec0b2857326c503ad1ecc86b04669fe6">&#9670;&nbsp;</a></span>remoteObjectPath()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QString GCF::IpcRemoteObject::remoteObjectPath </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>path of the object in the remote application's object tree </dd></dl>

</div>
</div>
<a id="a7e81e6bf18f701e02e796c6397d463c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e81e6bf18f701e02e796c6397d463c3">&#9670;&nbsp;</a></span>properties()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QVariantMap GCF::IpcRemoteObject::properties </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A map of all properties and their values in the remote application.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>this function returns an empty map until <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">isActivated()</a> returns false. </dd></dl>

</div>
</div>
<a id="a2873a4e5e7f62e06a5d867ec82f343a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2873a4e5e7f62e06a5d867ec82f343a0">&#9670;&nbsp;</a></span>signalMethods()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QStringList GCF::IpcRemoteObject::signalMethods </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>a list of signal method signatures in the remote object</dd></dl>
<dl class="section note"><dt>Note</dt><dd>this function returns an empty list until <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">isActivated()</a> returns false. </dd></dl>

</div>
</div>
<a id="a5f3ce460e4dd464f4dbe1d403ba2aa22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f3ce460e4dd464f4dbe1d403ba2aa22">&#9670;&nbsp;</a></span>invokableMethods()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QStringList GCF::IpcRemoteObject::invokableMethods </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>a list of invokable (signal, public slots and Q_INVOKABLE) method signatures in the remote object</dd></dl>
<dl class="section note"><dt>Note</dt><dd>this function returns an empty list until <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">isActivated()</a> returns false. </dd></dl>

</div>
</div>
<a id="ae6d73c2d8aa40b5a368a948025dad171"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6d73c2d8aa40b5a368a948025dad171">&#9670;&nbsp;</a></span>updateProperty()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a> GCF::IpcRemoteObject::updateProperty </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>propertyName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QObject *&#160;</td>
          <td class="paramname"><em>receiver</em> = <code>nullptr</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>member</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sends a request to update the value of <code>propertyName</code> in the local <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a7e81e6bf18f701e02e796c6397d463c3">properties()</a> map. The function returns true if the update request was queued successfully, false with error message otherwise.</p>
<p>The <code>receiver</code> and <code>member</code> parameters can be used to specify a object and its method that should get invoked when the result of sending the update property request becomes available. The <code>member</code> should be a function that accepts <code>QVariant</code>, <code>bool</code> and <code>QString</code> parameters.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">propertyName</td><td>name of the property to update </td></tr>
    <tr><td class="paramname">receiver</td><td>pointer to the <code>QObject</code> that will get notified when the result of update property request becomes available </td></tr>
    <tr><td class="paramname">member</td><td>a member function in <code>receiver</code> that will get called when the result becomes available. This parameter must be constructed using SIGNAL or SLOT macros. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true upon success. false and error message upon failure.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5eb333dca6e8856124942e19b0b59cc1">propertyUpdated()</a> </dd></dl>

</div>
</div>
<a id="a9e212018eef32acfda38c1f7f0b0c655"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e212018eef32acfda38c1f7f0b0c655">&#9670;&nbsp;</a></span>changeProperty()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a> GCF::IpcRemoteObject::changeProperty </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>propertyName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVariant &amp;&#160;</td>
          <td class="paramname"><em>propertyValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QObject *&#160;</td>
          <td class="paramname"><em>receiver</em> = <code>nullptr</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>member</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sends a request to change the value of <code>propertyName</code> to <code>propertyValue</code>. The function returns true if the update request was queued successfully, false with error message otherwise.</p>
<p>The <code>receiver</code> and <code>member</code> parameters can be used to specify a object and its method that should get invoked when the result of sending the change property request becomes available. The <code>member</code> should be a function that accepts <code>QVariant</code>, <code>bool</code> and <code>QString</code> parameters.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">propertyName</td><td>name of the property in the remote object to change </td></tr>
    <tr><td class="paramname">propertyValue</td><td>new value of the property to be set on the remote obkect </td></tr>
    <tr><td class="paramname">receiver</td><td>pointer to the <code>QObject</code> that will get notified when the result of change property request becomes available </td></tr>
    <tr><td class="paramname">member</td><td>a member function in <code>receiver</code> that will get called when the result becomes available. This parameter must be constructed using SIGNAL or SLOT macros. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true upon success. false and error message upon failure.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5eb333dca6e8856124942e19b0b59cc1">propertyUpdated()</a> </dd></dl>

</div>
</div>
<a id="ab54f13ee3e8e707aab53b06f658c4003"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab54f13ee3e8e707aab53b06f658c4003">&#9670;&nbsp;</a></span>call()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_g_c_f_1_1_result.html">GCF::Result</a> GCF::IpcRemoteObject::call </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>method</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVariantList &amp;&#160;</td>
          <td class="paramname"><em>args</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QObject *&#160;</td>
          <td class="paramname"><em>receiver</em> = <code>nullptr</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>member</em> = <code>nullptr</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Places a asynchronous call to a <code>method</code> on the remote object with <code>args</code>. When the result of the method invocation becomes available notification is sent to the <code>member</code> function on <code>receiver</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">method</td><td>name of the remote method to invoke </td></tr>
    <tr><td class="paramname">args</td><td>arguments to be passed to the remote method </td></tr>
    <tr><td class="paramname">receiver</td><td>pointer to the receiver <code>QObject</code> that will be notified when the result of method invocation becomes available </td></tr>
    <tr><td class="paramname">member</td><td>a member function in <code>receiver</code> that will get called when the result becomes available. This parameter must be constructed using SIGNAL or SLOT macros. This member function must accept a <code>QVariant</code>, <code>bool</code> and <code>QString</code> parameter. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true upon successfully placing the call. False + error message upon failure. </dd></dl>

</div>
</div>
<a id="a0a07e030ee61d05b73f7366420b3ef10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a07e030ee61d05b73f7366420b3ef10">&#9670;&nbsp;</a></span>activated</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::activated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted when this class becomes activated. <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a> is considered activated when it was able to establish communication with a remote object successfuly and receive <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a7e81e6bf18f701e02e796c6397d463c3">properties()</a>, <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a2873a4e5e7f62e06a5d867ec82f343a0">signalMethods()</a> and <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5f3ce460e4dd464f4dbe1d403ba2aa22">invokableMethods()</a> data. </p>

</div>
</div>
<a id="af311412eea6ebba527a5c01377414db3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af311412eea6ebba527a5c01377414db3">&#9670;&nbsp;</a></span>deactivated</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::deactivated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted when connection with a remote object is lost. After this signal is emitted <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a7e81e6bf18f701e02e796c6397d463c3">properties()</a>, <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a2873a4e5e7f62e06a5d867ec82f343a0">signalMethods()</a> and <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a5f3ce460e4dd464f4dbe1d403ba2aa22">invokableMethods()</a> return empty maps and lists. </p>

</div>
</div>
<a id="afda4f584706397729dc9a13f6ee8aaa1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afda4f584706397729dc9a13f6ee8aaa1">&#9670;&nbsp;</a></span>signalOccurance</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::signalOccurance </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>signal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVariantList &amp;&#160;</td>
          <td class="paramname"><em>args</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted when a signal by name <code>signal</code> was emitted in the remote object. <code>args</code> contains the parameters emitted in the remote signal. </p>

</div>
</div>
<a id="a5eb333dca6e8856124942e19b0b59cc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5eb333dca6e8856124942e19b0b59cc1">&#9670;&nbsp;</a></span>propertyUpdated</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::propertyUpdated </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>propertyName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVariant &amp;&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted when the value of <code>propertyName</code> was updated to <code>value</code> in <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a7e81e6bf18f701e02e796c6397d463c3">properties()</a>. This happens only upon explicit calls to <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#a9e212018eef32acfda38c1f7f0b0c655">changeProperty()</a> or <a class="el" href="class_g_c_f_1_1_ipc_remote_object.html#ae6d73c2d8aa40b5a368a948025dad171">updateProperty()</a> </p>

</div>
</div>
<a id="a27765d87420dfdb641b7a0425e190545"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27765d87420dfdb641b7a0425e190545">&#9670;&nbsp;</a></span>couldNotActivate</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::couldNotActivate </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>error</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted when this class could not be activated. The <code>error</code> parameter describes the reason for failure. </p>

</div>
</div>
<a id="af82279a50e96594db47f1f838c1da0aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af82279a50e96594db47f1f838c1da0aa">&#9670;&nbsp;</a></span>error</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void GCF::IpcRemoteObject::error </td>
          <td>(</td>
          <td class="paramtype">const QString &amp;&#160;</td>
          <td class="paramname"><em>error</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This signal is emitted whenever any error is encountered in communicating with the remote object. </p>

</div>
</div>
</div><!-- contents -->
<div class="ttc" id="aclass_g_c_f_1_1_ipc_remote_object_html_af9a3fe129807efd53e0a8e001335b9a0"><div class="ttname"><a href="class_g_c_f_1_1_ipc_remote_object.html#af9a3fe129807efd53e0a8e001335b9a0">GCF::IpcRemoteObject::isActivated</a></div><div class="ttdeci">bool isActivated() const</div><div class="ttdef"><b>Definition:</b> IpcRemoteObject.cpp:274</div></div>
<div class="ttc" id="aclass_g_c_f_1_1_signal_spy_html"><div class="ttname"><a href="class_g_c_f_1_1_signal_spy.html">GCF::SignalSpy</a></div><div class="ttdoc">Enables introspection of signal emissions from a QObject.</div><div class="ttdef"><b>Definition:</b> SignalSpy.h:105</div></div>
<div class="ttc" id="agroup__gcf__ipc_html_ga9914677e892972e036b1f7498110c7a4"><div class="ttname"><a href="group__gcf__ipc.html#ga9914677e892972e036b1f7498110c7a4">GCF::ipcConnect</a></div><div class="ttdeci">GCF::Result ipcConnect(QObject *sender, const char *signal, GCF::IpcRemoteObject *receiver, const char *member)</div><div class="ttdef"><b>Definition:</b> IpcRemoteObject.h:110</div></div>
<div class="ttc" id="aclass_g_c_f_1_1_ipc_remote_object_html_a0a07e030ee61d05b73f7366420b3ef10"><div class="ttname"><a href="class_g_c_f_1_1_ipc_remote_object.html#a0a07e030ee61d05b73f7366420b3ef10">GCF::IpcRemoteObject::activated</a></div><div class="ttdeci">void activated()</div></div>
<div class="ttc" id="aclass_g_c_f_1_1_ipc_remote_object_html"><div class="ttname"><a href="class_g_c_f_1_1_ipc_remote_object.html">GCF::IpcRemoteObject</a></div><div class="ttdoc">This class allows you to maintain a persistent connection with a remote object.</div><div class="ttdef"><b>Definition:</b> IpcRemoteObject.h:49</div></div>
</div>
</div>
</div>
<div class="footer_content">
<table width="100%" class="footer">
<tr>
<td align="left" width="50%">Copyright &copy; 2013-2019,
 <a class="el" href="http://www.vcreatelogic.com" target="_black">VCreate Logic Private Limited</a></td>
<td align="right" width="50%"><a class="el" href="http://www.vcreatelogic.com/products/gcf" target="_black">GCF - Generic Component Framework</a></td>
</tr>
</table>
</div>
</div>
</body>
</html>
